package com.ruoyi.system.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.bo.GzdsGradeBO;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.GzdsGradeMapper;
import com.ruoyi.system.domain.GzdsGrade;
import com.ruoyi.system.service.IGzdsGradeService;

/**
 * 成绩管理Service业务层处理
 *
 * @author ruoyi
 * @date 2021-04-20
 */
@Service
public class GzdsGradeServiceImpl implements IGzdsGradeService
{
    @Autowired
    private GzdsGradeMapper gzdsGradeMapper;

    /**
     * 查询成绩管理
     *
     * @param code 成绩管理ID
     * @return 成绩管理
     */
    @Override
    public GzdsGrade selectGzdsGradeById(Long code)
    {
        return gzdsGradeMapper.selectGzdsGradeById(code);
    }

    /**
     * 查询成绩管理列表
     *
     * @param gzdsGrade 成绩管理
     * @return 成绩管理
     */
    @Override
    public List<GzdsGrade> selectGzdsGradeList(GzdsGrade gzdsGrade)
    {
        return gzdsGradeMapper.selectGzdsGradeList(gzdsGrade);
    }

    /**
     * 新增成绩管理
     *
     * @param gzdsGrade 成绩管理
     * @return 结果
     */
    @Override
    public int insertGzdsGrade(GzdsGrade gzdsGrade)
    {
        return gzdsGradeMapper.insertGzdsGrade(gzdsGrade);
    }

    /**
     * 修改成绩管理
     *
     * @param gzdsGrade 成绩管理
     * @return 结果
     */
    @Override
    public int updateGzdsGrade(GzdsGrade gzdsGrade)
    {
        return gzdsGradeMapper.updateGzdsGrade(gzdsGrade);
    }

    /**
     * 批量删除成绩管理
     *
     * @param codes 需要删除的成绩管理ID
     * @return 结果
     */
    @Override
    public int deleteGzdsGradeByIds(Long[] codes)
    {
        return gzdsGradeMapper.deleteGzdsGradeByIds(codes);
    }

    /**
     * 删除成绩管理信息
     *
     * @param code 成绩管理ID
     * @return 结果
     */
    @Override
    public int deleteGzdsGradeById(Long code)
    {
        return gzdsGradeMapper.deleteGzdsGradeById(code);
    }

    /**
     * 查询成绩管理
     *
     * @param banklevel 成绩管理ID
     * @return 成绩管理
     */
    @Override
    public List<GzdsGrade> selectGzdsGradeNameNumber(@Param("banklevel")String banklevel,@Param("name")String name, @Param("phoneNumber")String phoneNumber) {
        return gzdsGradeMapper.selectGzdsGradeNameNumber(banklevel, name, phoneNumber);
    }
    /**
     * 成绩排行榜
     * @param bankLevel
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public List<GzdsGradeBO> getGradeRankList(String bankLevel, Integer pageNum, Integer pageSize) {
        if (pageNum == null) {
            pageNum = 1;
        }
        if (pageSize == null) {
            pageSize = 10;
        }

        /** 封装参数 **/
        Map<String, Object> paraMap = new HashMap<>();
        paraMap.put("bankLevel", bankLevel);
        paraMap.put("startNum", (pageNum-1)*pageSize);
        paraMap.put("pageSize", pageSize);

        /** 查询并返回结果 **/
        return gzdsGradeMapper.getGradeRankList(paraMap);
    }

    /**
     * 获取成绩数量
     * @param bankLevel
     * @return
     */
    @Override
    public Integer getGradeRankCount(String bankLevel) {
        /** 封装参数 **/
        Map<String, Object> paraMap = new HashMap<>();
        paraMap.put("bankLevel", bankLevel);

        /** 查询并返回结果 **/
        return gzdsGradeMapper.getGradeRankCount(paraMap);
    }

    /**
     * 根据用户ID查询用户排名等基本信息
     * @param code
     * @param bankLevel
     * @return
     */
    @Override
    public GzdsGradeBO getGradeRankByCode(String code, String bankLevel) {
        /** 封装参数 **/
        Map<String, Object> paraMap = new HashMap<>();
        paraMap.put("code", code);
        paraMap.put("bankLevel", bankLevel);

        /** 查询并返回结果 **/
        return gzdsGradeMapper.getGradeRankByCode(paraMap);
    }

    /**
     * 根据用户姓名查询用户排名等基本信息
     * @param name
     * @param phoneNumber
     * @param bankLevel
     * @return
     */
    @Override
    public GzdsGradeBO getGradeRankByName(String name, String phoneNumber, String bankLevel) {
        /** 封装参数 **/
        Map<String, Object> paraMap = new HashMap<>();
        paraMap.put("name", name);
        paraMap.put("phoneNumber", phoneNumber);
        paraMap.put("bankLevel", bankLevel);

        GzdsGradeBO grade = gzdsGradeMapper.getGradeRankByName(paraMap);

        return grade;
    }
}
